import CryptoJS from "crypto-js";

// post 序列化
export function sortJsonKeys(obj) {
	console.log('obj-----------',obj);
	function processObject(o) {
		const entries = Object.entries(o)
			.sort(([keyA], [keyB]) => keyA.localeCompare(keyB)); // 按字典序排序

		return entries.reduce((acc, [key, value]) => {
			if (Array.isArray(value)) {
				// 忽略数组
				return acc;
			} else if (typeof value === 'object' && value !== null) {
				// 递归处理嵌套对象
				acc[key] = processObject(value);
			} else if (typeof value === 'string' && !isNaN(parseFloat(value)) && isFinite(value)) {
				console.log(value);
				// 处理字符串形式的数字，去除末尾0
				acc[key] = value
				// acc[key] = parseFloat(value).toFixed(12).replace(/\.?0+$/, '');
			} else if (typeof value === 'number') {
				console.log(value);
				// 抹去小数后面的0（如果它是整数或小数但末尾有0）
				acc[key] = Number.isInteger(value) ? value : parseFloat(value.toPrecision(
					12)); // 使用toPrecision避免科学计数法，但可能需要根据实际情况调整精度
			} else {
				// 其他类型直接赋值（这里假设字符串不需要特殊处理）
				acc[key] = value;
			}
			return acc;
		}, {});
	}

	// 处理输入参数并返回格式化后的对象
	const formattedObj = processObject(obj);
	console.log(formattedObj);

	// 将对象转换为JSON字符串（不带缩进，因为您要求的格式似乎是这样）
	return formattedObj;
}

// get 序列化
export function sortAndFormatParams(params) {

	function formatValue(value) {
		if (typeof value === 'number') {

			return value.toString().replace(/\.0+$/, '');
		} else if (Array.isArray(value) || typeof value === 'object') {

			return JSON.stringify(value);
		}

		return value.toString();
	}


	let entries = Object.entries(params);


	entries.sort(([a], [b]) => a.localeCompare(b));


	let queryString = entries.map(([key, value]) => {
		let formattedValue = formatValue(value);

		return key + formattedValue;

	}).join('');

	return queryString;
}

export function dataGong() {
	let now = new Date();
	let currentTimestamp = now.getTime();
	let dataGong = {
		timestamp: currentTimestamp
	}
	return dataGong
}

export function dataGongLogin() {
	let now = new Date();
	let currentTimestamp = now.getTime();
	let dataGongLogin = {
		// token: uni.getStorageSync('token'),
		// appSecret: uni.getStorageSync('appSecret'),
		timestamp: currentTimestamp
	}
	return dataGongLogin
}

// 结合
export function combine(value,timestamp) {
	let token = 'liudaheiandyangjingxinlikecoffee'
	let appSecret = 'panpanandzhangzhanglikekfc'
	let sign = "" + "Authorization" + token + "json" + value + "createTime" + timestamp + "appSecret" + appSecret
	console.log('sign----------', sign);
	let signValue = (CryptoJS.MD5(sign).toString(CryptoJS.enc.Hex)).toLowerCase();
	return signValue
}
